 /*CREACION DE LA BASE DE DATOS*/
CREATE DATABASE [Mundial2010] ON  PRIMARY 
( NAME = N'Mundial2010', FILENAME = N'D:\Mundialeitor2010\Mundial2010.mdf' , SIZE = 3072KB , FILEGROWTH = 1024KB )
 LOG ON 
( NAME = N'Mundial2010_log', FILENAME = N'D:\Mundialeitor2010\Mundial2010_log.ldf' , SIZE = 1024KB , FILEGROWTH = 10%)
GO
IF NOT EXISTS (SELECT name FROM sys.filegroups WHERE is_default=1 AND name = N'PRIMARY') ALTER DATABASE [Mundial2010] MODIFY FILEGROUP [PRIMARY] DEFAULT
GO
USE Mundial2010
GO
/*CREACION DE LAS TABLAS*/
CREATE TABLE TipoUsuario
(
	id int identity not null,
	descripcion nvarchar(200) null,
	CONSTRAINT PK_tipoUsuario PRIMARY KEY CLUSTERED (id ASC)
)
GO

CREATE TABLE Usuario
(
	id int identity not null,
	nombre nvarchar(20) not null,
	apellido nvarchar(20) not null,
	fechaAlta datetime not null,
	tipousuario_id int not null,
	login nvarchar(20) not null,
	password nvarchar(20) not null,
	email nvarchar(50) null,
	CONSTRAINT PK_usuario PRIMARY KEY CLUSTERED (id ASC)
)
GO

CREATE TABLE CuentaCorriente
(
	id int identity not null,
	saldo float not null,
	montoMovimiento float not null,
	fechaMovimiento datetime not null,
	descripcion nvarchar(200) null,
	usuario_id int not null,	
	CONSTRAINT PK_cuentaCorriente PRIMARY KEY CLUSTERED (id ASC)
)
GO

CREATE TABLE Seleccion
(
	id int identity not null,
	nombre nvarchar(30),
	abreviatura nvarchar(3)	
	CONSTRAINT PK_seleccion PRIMARY KEY CLUSTERED (id ASC)
)
GO

CREATE TABLE Partido
(
	id int identity not null,
	sede nvarchar(100) not null,
	fecha datetime not null,	
	seleccionLocal_id int not null,
	seleccionVisitante_id int not null,
	golLocal int null,
	golVisitante int null,
	etapa_id int null,
	CONSTRAINT PK_partido PRIMARY KEY CLUSTERED (id ASC)
)
GO

CREATE TABLE Etapa
(
	id int identity not null,
	nombre nvarchar(20) not null,
	empate bit not null,
	valor float not null,
	fechaInicio datetime not null,
	fechaFin datetime not null,
	CONSTRAINT PK_etapa PRIMARY KEY CLUSTERED (id ASC)
)
GO

CREATE TABLE Boleta
(
	id int identity not null,
	usuario_id int not null,
	etapa_id int not null,	
	fechaCreacion datetime not null,
	CONSTRAINT PK_boleta PRIMARY KEY CLUSTERED (id ASC)
)
GO

CREATE TABLE DetalleBoleta
(
	id int identity not null,
	boleta_id int not null,
	partido_id int not null,
	resultado nvarchar(10) not null,
	CONSTRAINT PK_detalleBoleta PRIMARY KEY CLUSTERED (id ASC)
)
GO

CREATE TABLE TablaPosiciones
(
	id int identity not null,
	etapa_id int not null,
	descripcion nvarchar(200) null,
	CONSTRAINT PK_tablaPosiciones PRIMARY KEY CLUSTERED (id ASC)
)
GO

CREATE TABLE DetalleTablaPosiciones
(
	id int identity not null,
	tabla_id int not null,
	boleta_id int not null,
	puntos int not null,
	CONSTRAINT PK_detalleTablaPosiciones PRIMARY KEY CLUSTERED (id ASC)
)

/*CREACION DE LOS CONSTRAINTS*/
ALTER TABLE Usuario WITH CHECK
ADD CONSTRAINT FK_usuario_tipoUsuario FOREIGN KEY(tipoUsuario_id)
REFERENCES TipoUsuario(id)
GO

ALTER TABLE CuentaCorriente WITH CHECK
ADD CONSTRAINT FK_cuentaCorriente_usuario FOREIGN KEY(usuario_id)
REFERENCES Usuario(id)
GO

ALTER TABLE Boleta WITH CHECK
ADD CONSTRAINT FK_boleta_usuario FOREIGN KEY(usuario_id)
REFERENCES Usuario(id)
GO

ALTER TABLE Boleta WITH CHECK
ADD CONSTRAINT FK_boleta_etapa FOREIGN KEY(etapa_id) 
REFERENCES Etapa(id)
GO

ALTER TABLE DetalleBoleta WITH CHECK
ADD CONSTRAINT FK_detalleBoleta_boleta FOREIGN KEY(boleta_id) 
REFERENCES Boleta(id)
GO

ALTER TABLE DetalleBoleta WITH CHECK
ADD CONSTRAINT FK_detalleBoleta_partido FOREIGN KEY (partido_id)
REFERENCES Partido(id)
GO

ALTER TABLE TablaPosiciones WITH CHECK
ADD CONSTRAINT FK_tablaPosiciones_etapa FOREIGN KEY(etapa_id)
REFERENCES Etapa(id)
GO

ALTER TABLE DetalleTablaPosiciones WITH CHECK
ADD CONSTRAINT FK_detalleTablaPosiciones_tablaPosiciones FOREIGN KEY(tabla_id)
REFERENCES TablaPosiciones(id)
GO

ALTER TABLE DetalleTablaPosiciones WITH CHECK
ADD CONSTRAINT FK_detalleTablaPosiciones_boleta FOREIGN KEY(boleta_id)
REFERENCES Boleta(id)
GO

ALTER TABLE Partido WITH CHECK
ADD CONSTRAINT FK_partido_etapa FOREIGN KEY(etapa_id)
REFERENCES Etapa(id)
GO

ALTER TABLE Partido WITH CHECK
ADD CONSTRAINT FK_partido_seleccionLocal FOREIGN KEY(seleccionLocal_id)
REFERENCES Seleccion(id)
GO

ALTER TABLE Partido WITH CHECK
ADD CONSTRAINT FK_partido_seleccionVisitante FOREIGN KEY(seleccionVisitante_id)
REFERENCES Seleccion(id)
GO
